Autonomous vehicles typically can operate in a manual mode or an autonomous mode. Vehicles operating in a manual mode respond to drivers' input. When operating in an autonomous mode, a vehicle can navigate to various locations using onboard sensors, allowing the vehicle to travel with minimal human interaction or in some cases without any passengers. Vehicles operating in an autonomous mode (e.g., driverless) can relieve occupants, especially the driver, from some driving-related responsibilities.
Compared with traditional vehicles, self-driving vehicles internally have a considerably higher demand for computational power. The internal architecture of autonomous vehicles computer(s) typically consists of a number of nodes containing programs for various tasks of autonomous driving such as sensor processing, perception, planning and controls, as well as communication channels linking those nodes and passing data for mutual interested topics.
Since the usability, user experience, and safety of autonomous vehicles heavily rely on the real-time performance of the end-to-end computation, the performance requirement for communications amongst the nodes is also very high. Typical requirements include but not limited to: high throughput especially for data channels, low latency especially for control channels, low processor occupation, low message drop rate, and other advanced features such as the ability to negotiate flexible communication rate. Other requirements indirectly related to communication mechanism include program/process isolation and resource management leading to improved system robustness and stability. Conventional architectures cannot satisfy such requirements.